package 力扣.双指针.双指针;

public class 最大连续1的个数III_1004 {
    public static void main(String[] args) {
//        int[] ints = {1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0};
//        int k = 2;

//        int[] ints = {0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1};
//        int k = 3;

        int[] ints = {1,1,1,0};
        int k = 1;
        int i = longestOnes(ints, k);
        System.out.println(i);
    }

    public static int longestOnes(int[] A, int K) {
        int left = 0;//左指针
        int maxLen = 0;//最大长度
        int teLen = 0;//当前长度
        for (int i = 0; i < A.length; i++) {
            int te = A[i];
            if (te == 0){//当前元素为零时
                    K--;
                    teLen++;
                if (K < 0){//并且K小于零
                    teLen--;
                    maxLen = Math.max(maxLen, teLen);//更新最大长度
                    while (A[left] == 1){//移动左指针，直到遇到元素为零的
                        left++;
                        teLen--;
                    }
                    left++;//左指针要遍历到 “零元素” 的下一位
                    K++;
                }
            }else {
                teLen++;
            }
        }
        return Math.max(maxLen, teLen);//遍历到数组末尾，还要更新一次最大长度
    }
}
